package com.atguigu.partition;

import org.apache.flink.api.common.functions.Partitioner;

/**
 * @author gmd
 * @desc 自定义分区器，实现Partitioner接口
 * @since 2024-11-25 10:17:04
 */
public class MyPartitioner implements Partitioner<String> {

    /**
     * 该分区器接收一个字符串类型的 key 和一个整数类型的 numPartitions（表示分区的数量）作为输入，返回一个整数值表示数据应该被分配到哪个分区中。
     * 分区规则是通过将 key 解析为整数，然后对 numPartitions 取模来实现的。这意味着相同的 key 值总是会被分配到相同的分区中。
     */
    @Override
    public int partition(String key, int numPartitions) {
        // 自定义分区规则
        return Integer.parseInt(key) % numPartitions;
    }

}
